草庐IT

Android PlusOneButton 不初始化

全部标签

c# - 声明、实例化、初始化和分配对象的含义

从技术上讲,声明、实例化、初始化和分配对象的含义和区别是什么在C#中?我想我知道分配的含义,但我没有正式的定义。在msdn中,说“创建对象的行为称为实例化”。但是创造的意思对我来说似乎很模糊。你可以写inta;a是否被创建? 最佳答案 声明-声明一个变量意味着向程序中引入一个新变量。您定义其类型和名称。inta;//aisdeclaredInstantiate-实例化类意味着创建该类的新实例。Source.MyObjectx=newMyObject();//wearemakinganewinstanceoftheclassMyObj

C# - 检查变量是否已初始化

我想检查一个变量是否在运行时以编程方式初始化。为了让这个原因不那么神秘,请看下面不完整的代码:strings;if(someCondition)s=someValue;if(someOtherCondition)s=someOtherValue;boolsIsUninitialized=/*assignvaluecorrectly*/;if(!sIsUninitialized)Console.WriteLine(s)elsethrownewException("Pleaseinitializes.");并完成相关位。一个hacky解决方案是用默认值初始化s:strings="zanzi

C# 6.0 的新字典初始化器 - 说明

这个问题在这里已经有了答案:Whatbenefitsdoesdictionaryinitializersaddovercollectioninitializers?(3个答案)关闭2年前。我读过:Theteamhavegenerallybeenbusyimplementingothervariationsoninitializers.ForexampleyoucannowinitializeaDictionaryobject但是看着:varDic=newDictionary{{"x",3},{"y",7}};对比varDic=newDictionary{["x"]=3,["y"]=7}

c# - 为什么我不能将数组初始值设定项与隐式类型变量一起使用?

为什么我不能对隐式类型变量使用数组初始值设定项?string[]words={"apple","strawberry","grape"};//legalstring[]words=newstring[]{"apple","strawberry","grape"};//legalvarwords=new[]{"apple","strawberry","grape"};//legalvarwords=newstring[]{"apple","strawberry","grape"};//legalvarwords={"apple","strawberry","grape","peach"}

c# - 为什么 C# 4.0 允许在匿名对象初始化代码中使用尾随逗号?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Inlinepropertyinitialisationandtrailingcomma在我的一个项目(C#4.0、VisualStudio2010)上工作时,我无意中发现了这样的代码varobj=new{field1="Test",field2=3,}编译和执行正常,没有任何错误甚至警告,并且工作方式与完全一样varobj=new{field1="Test",field2=3}为什么编译器可以容忍第一个示例中的尾部逗号?这是编译器中的错误还是此类行为确实有某种目的?谢谢

c# - 你如何在 C# 中初始化一个数组?

如何在C#中初始化数组? 最佳答案 像这样:int[]values=newint[]{1,2,3};或者这个:int[]values=newint[3];values[0]=1;values[1]=2;values[2]=3; 关于c#-你如何在C#中初始化一个数组?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1241165/

c# - 在 Visual Studio 2010 中使用 Resharper 6 自动完成初始值设定项

我想知道是否有任何方法可以使用VS2010和Resharper(6)简化对象初始化过程。当出现下面的黄色工具提示时,我想让它为每个字段创建一个分配。例如,它会生成:联系=;联系方式=;创建日期=;等等等等(每个属性一个)。 最佳答案 ReSharper代码补全正是以这种方式工作的。键入大括号后,按Ctrl+Space即可获取所有属性的列表:vardata=newData{|}然后,在输入逗号分隔属性后,ReSharper补全将仅显示您尚未初始化的属性。更重要的是,当您完成属性名称时,它会插入属性和等号。

c# - 由于静态字段初始化的顺序,如何捕获或标记潜在问题

考虑以下C#代码:usingSystem;classProgram{staticstringstring1="AAA";staticstringstring2=string1+string3;staticstringstring3="BBB";staticvoidMain(){Console.WriteLine(string2);}}我今天早些时候写了一些这样的代码,并期望string2包含值AAABBB,但它只包含AAA。我阅读了一些有关静态变量初始化顺序的资料,但对我来说,编译期间会生成某种类型的警告或错误似乎更可取。两个问题:为什么允许这样的代码编译成功?(如果答案是:“因为C#

c# - 在集合类型上使用大括号初始化程序是否设置了初始容量?

在集合类型上使用大括号初始化器是否设置了它的容量,还是您仍然需要指定它?也就是说,确实:varlist=newList(){"One","Two"};结果与此相同:varlist=newList(2){"One","Two"}; 最佳答案 对象初始化器简单地调用Add对于每个项目。varlist=newList{"One","Two","Three"};如您所见,在本例中调用了无参数构造函数:L_0000:nopL_0001:newobjinstancevoid[mscorlib]System.Collections.Generic

c# - 字段初始值设定项不能引用非静态字段、方法或属性?

我有一个存储库类和一个服务类,如下所示:publicclassDinnerRepository{DinnerDataContextdb=newDinnerDataContext();publicDinnerGetDinner(intid){returndb.Dinners.SingleOrDefault(d=>d.DinnerID==id);}//OthersCode}publicclassService{DinnerRepositoryrepo=newDinnerRepository();Dinnerdinner=repo.GetDinner(5);//OtherCode}这会引发错